const { DATE_BASE, DATE_UNIT } = require('@/constant');
/**
 * 日期计算 通过传值进行计算
 * @param {Object} options 传值 date number unit isZero
 * @param {Date|Number|String} options.date 日期 默认值 new Date()
 * @param {Number} options.number 计算的数据 可以是负数,负数就是减法 默认值 0
 * @param {String} options.unit 单位 可选择值DATE_UNIT.DAY,DATE_UNIT.HOUR,DATE_UNIT.MINUTE,DATE_UNIT.SECOND 默认值 DATE_UNIT.DAY
 * @param {Boolean} options.isZero 是否设置零点
 * @returns {Date} 返回一个Date类型数据
 */
module.exports = function calc({
  date = new Date(),
  number = 0,
  unit = DATE_UNIT.DAY,
  isZero = false
}) {
  let timeStamp = 0;
  if (date.constructor === Number) {
    timeStamp = date;
  } else {
    if (date.constructor === String) {
      date = new Date(date);
    }
    timeStamp = date.getTime();
  }
  const result = new Date(timeStamp + number * (DATE_BASE[unit] || DATE_BASE.DAY));
  return isZero ? new Date(result.setHours(0, 0, 0, 0)) : result;
};
